(set-logic QF_S)
(set-info :status sat)
(set-option :strings-exp true)
(set-option :strings-fmf true)

(declare-fun var_0 () String)
(declare-fun var_1 () String)
(declare-fun var_2 () String)
(declare-fun var_3 () String)
(declare-fun var_4 () String)
(declare-fun var_5 () String)
(declare-fun var_6 () String)
(declare-fun var_7 () String)
(declare-fun var_8 () String)
(declare-fun var_9 () String)
(declare-fun var_10 () String)
(declare-fun var_11 () String)
(declare-fun var_12 () String)

(assert (str.in_re (str.++ var_8 "z" var_9 ) (re.++ (re.* (re.union (str.to_re "a") (re.++ (str.to_re "b") (re.++ (re.* (re.union (str.to_re "b") (str.to_re "a"))) (str.to_re "z"))))) (re.++ (str.to_re "b") (re.* (re.union (str.to_re "b") (str.to_re "a")))))))
(assert (str.in_re (str.++ var_8 "z" var_9 ) (re.++ (re.* (re.union (re.union (str.to_re "z") (str.to_re "a")) (re.++ (str.to_re "b") (re.++ (re.* (str.to_re "b")) (re.union (str.to_re "z") (str.to_re "a")))))) (re.++ (str.to_re "b") (re.* (str.to_re "b"))))))
(assert (str.in_re (str.++ var_8 "z" var_9 ) (re.++ (re.* (re.union (str.to_re "a") (re.++ (str.to_re "b") (re.++ (re.* (re.union (str.to_re "z") (str.to_re "a"))) (str.to_re "b"))))) (re.++ (str.to_re "b") (re.* (re.union (str.to_re "z") (str.to_re "a")))))))
(assert (str.in_re (str.++ var_8 "z" var_9 ) (re.* (re.++ (re.union (str.to_re "b") (str.to_re "a")) (re.++ (re.* (str.to_re "a")) (re.union (str.to_re "z") (str.to_re "b")))))))
(assert (str.in_re var_9 (re.* (re.range "a" "u"))))
(assert (str.in_re var_8 (re.* (re.range "a" "u"))))
(assert (not (str.in_re (str.++ "b" var_8 "z" "b" var_9 ) (re.++ (re.* (re.++ (str.to_re "b") (str.to_re "z"))) (str.to_re "b")))))
(check-sat)
